/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import exception.DuplicateConstraintException;
import exception.ExceptionInterceptor;
import exception.RemoveConstraintException;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.inject.Named;
import javax.interceptor.Interceptors;
import model.dao.FichaDao;
import model.dao.LoteDao;
import model.entidades.Ficha;
import model.entidades.Lote;

/**
 *
 * @author helton
 */
@Named
@Stateless
@Interceptors(ExceptionInterceptor.class)
public class FichaController implements Serializable {

    @Inject
    FichaDao fichaDao;
    @Inject
    LoteDao loteDao;

    public Ficha insert(Ficha ficha) throws DuplicateConstraintException {
        fichaDao.insert(ficha);
        return ficha;
    }

    public Ficha update(Ficha ficha) throws DuplicateConstraintException {
        fichaDao.update(ficha);
        return ficha;
    }

    public void remove(Ficha ficha) throws RemoveConstraintException {
        fichaDao.delete(ficha);
    }

    public List<Ficha> getAll() {
        return fichaDao.getAll();
    }

    public Lote enviarFichas() throws DuplicateConstraintException {
        Lote lote = new Lote();
        List<Ficha> fichas;
        Ficha ficha = new Ficha();

        fichas = fichaDao.listFichas();

        if (!fichas.isEmpty()) {
            lote.setDataEnv(new Date());
            loteDao.insert(lote);
            for (int i = 0; i < fichas.size(); i++) {
                ficha = (Ficha) fichas.get(i);
                ficha.setStatus("Enviado");
                ficha.setLote(lote);
                fichaDao.update(ficha);
            }
            return lote;
        } else {
            return null;
        }
    }

    public List<Ficha> printFichas(Lote lote) {
        List<Ficha> fichas;
        fichas = fichaDao.printFichas(lote);
        return fichas;
    }
}
